package org.wk.core.db.dao;

import java.io.Serializable;
import java.util.List;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.repository.NoRepositoryBean;

/**
 * 
 * @ClassName	: GenericJpaRepository
 * @Package		：org.wk.core.db.dao
 * @Author df.w 
 * @Create Time	：2018年5月2日 上午9:58:48
 * @Description	: 自定义DAO层的封装接口
 * @param <T>
 * @param <ID>
 */
@NoRepositoryBean
public interface GenericJpaRepository<T, ID extends Serializable> extends JpaRepository<T, ID> {
	
	/** 
	* @Title: saveBatch 
	* @Description: 批量保存
	* @return void
	* @throws 
	*/ 
	public void saveBatch(List<T> data);
	
	/** 
	* @Title: updateBatch 
	* @Description: 批量更新
	* @return void
	* @throws 
	*/ 
	public void updateBatch(List<T> data);
	/** 
	* @Title: deleteBatch 
	* @Description: 批量删除
	* @return void
	* @throws 
	*/ 
	public void deleteBatch(List<T> data);
	/** 
	* @Title: saveOrUpdate 
	* @Description: 保存或更新
	* @return void
	* @throws 
	*/ 
	public void saveOrUpdate(T entity);
	/** 
	* @Title: findAll 
	* @Description: 查询全部
	* @return List<T>
	* @throws 
	*/ 
	public List<T> findAll(Specification<T> specification);
	/** 
	* @Title: findAll 
	* @Description: 分页查询
	* @return Page<T>
	* @throws 
	*/ 
	public Page<T> findAll(Specification<T> specification,Pageable pageable);
	/**
	* @Title		: update
	* @Param		: @param entity
	* @Return Type 	：void
	* @Description	: 更新接口
	*/ 
	public void update(T entity);
}
